第2章 python的基本语法

Warning

使用visual studio 进行开发时 ,以下代码需要加#coding=gbk

数字类型

使用Python内置的type函数可以查看一个数据的具体类型。

如何查看数字的具体类型

>>> type(1),type(1.0),type(True) //(<class 'int'>, <class 'float'>, <class 'bool'>)

类型转换

>>> int(1.0), float(1)(1, 1.0)

字符串类型

字符串引用

字符串里面有单引号,就用双引号包围;字符串里面有双引号,就用单引号包围
既有单引号又有双引号就用三引号包围。

不转义

使用r可以让反斜杠不发生转义

由于文件路径有反斜杠,所以我们常常在文件路径字符串前面加r

操作字符串

字符串输出

>>> name='小明';age=5;like='画画'>>> print('%s已经%d岁了,他爱好%s。' % (name, age, like))小明已经5岁了,他爱好画画。

截取字符串

  1. 截取字符串某个字母
    >>> 'Beautiful'[5]
  2. 截取字符串一段
    >>> 'Beautiful'[0:2]

>>> 'Beautiful'[0:-2]
3. 统计字母B的出现次数
>>> 'Beautiful'.count('B')

组合数据类型

列表

组合类型如何定义

>>> list_1=['a',1,1.0,'b']

list_1=['a',1,1.0,'b']

如何访问组合类型中的元素

提取一个元素

如果索引号为负数,则表示倒着取,-1表示最后一个元素。>>> list_1[-1],list_1[-2]('b', 1.0)

>>> list_1[-1],list_1[-2]  
('b', 1.0)

提取多个元素

也可以通过冒号:和索引号来提取多个元素,下面分别提取索引号从0到3(不含)、从1到最后的元素

>>> list_1[:3],list_1[1:]  
(['a', 1, 1.0], [1, 1.0, 'b'])

统计次数

可以使用count方法统计列表中元素出现的次数

>>> list_1.count('b')

删除元素

方法从列表中删除元素。

>>> list_1.pop()  
'b'  
>>> list_1  
['a', 1, 1.0]

增加元素

list_1.append(100)

元组类型

与列表不同的是,元组一旦建立就不能改变里面的数据,不能添加或删除数据项。元组的应用场景主要是存放重要数据(如函数的参数和返回值),保护数据安全。由于元组数据不改变,所以它的速度快于列表,因此能用元组尽量不用列表。

tuple_1=(100,1.0,1,'a')
print(type(tuple_1))
print(tuple_1)

元组和列表的相互转换

元组和列表之间可以互相转换

tuple_1=tuple(list_1);

计算元组中的元素个数

>>> len(tuple_1)

print(len(tuple_1))

字典

当数据之间存在对应关系的时候,就需要用到字典。字典中每个成员是以“键:值”对的形式存在的。字典中的键都是不重复的

dict_1={'春':'Spring','夏':'Summer','秋':'Autumn','冬':'Winter'}
print(type(dict_1))
print(dict_1['夏'])

更新字典

dict_1.update({'秋':'Fall'})
print(dict_1['秋'])

集合类型

集合与字典类似,但它仅包含键,而没有值

list_1=['春','夏','秋','冬','春','夏','秋','冬']
set_1=set(list_1)
print(set_1)

程序流程控制

这时候就有一个问题:哪行先执行,哪行后执行,某行执行完了之后再执行哪行?

执行顺序

3类:顺序执行,先执行第一行再执行第二行......依次从上往下执行;选择执行;有些代码可以跳过不执行,有选择地执行某些代码;循环执行,有些代码会反复执行。

  1. 顺序执行
  2. 选择执行
  3. 循环执行

条件语句if

score=input('请您输入分数:')
score=int(score)
if score>=90:
    print('优秀')
elif score>=80:
    print('良好')
elif score>=70:
    print('中等')
elif score>=60:
    print('较差')
else:
    print('未及格')

循环语句for

for 语句语法

str_1='abc'
for a in str_1:
    print(a)
Note

print(isinstance('abc',Iterable))

遍历列表

list_1=['a','b','c']
for a in list_1:
    print(a)

快速生成列表

方括号[]及其包含的内容又叫列表推导式。将方括号[]改为圆括号(),就成了生成器(generator)
print([x+2 for x in range(10)])

列表生成器

gene_1=(x+2 for x in range(10))
print(type(gene_1))
print(next(gene_1))
print(next(gene_1))
print(next(gene_1))

while语句

m=3
n=0
while m>n:
    print(m)
    m=m - 1

跳出循环的continue 语句

使用continue语句,Python将跳出当前循环块中的剩余语句,继续进行下一轮循环。

中断循环的break语句

使用continue语句,Python将跳出当前循环块中的剩余语句,继续进行下一轮循环。

跳过过程pass语句

有时候会看到pass语句,这个是占位用的,表示什么也不做,直接跳过。我们在编程时,可以先将结构搭建好,用pass语句占位,然后再来写结构体内部的语句

函数

函数的定义与调用

#coding=gbk
def f(x,y):
    return x+y
print(f)
print(type(f))
  1. 调用函数
print(f(1,2))
print(f('a','b'))
  1. 打印'*'号
def f(n):
    print('*' * n)

print(f(10))
print(f(20))
  1. 打印指定符号
def f(x,n):
    print(x * n)
print(f('*',20))
print(f('-',20))
print(f('+',20))

print 函数的使用

Note

查看某个函数使用help(print)

  1. 把字符串保存到本地文件中
f=open('test.txt','w')
print('Hello World!',file=f)
print('Hello Python!',file=f)
f.close()
  1. 设置分隔符

>>> print('www','www','www',sep='-')

内置函数

  1. 获取所有的内置函数.
    dir(builtins)
Warning

重点掌握type,dir,help 三个函数.

什么是类?

一个大型的程序可能有成百上千的函数。这么多函数放在一处,名称很容易混淆,于是我们需要把函数归类,将解决某类问题的函数放在一起,调用函数前先找到它所在的类

Object Oriented Programming,OOP),类则是面向对象编程的基础

面向对象编程有三大特征

面向对象编程有三大特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)

  1. 封装
    前面我们已经用到了封装。将各种类型的数据放进列表中,这是数据层面的封装;把常用的代码块放入一个函数,这是语句层面的封装。
    类则是一种更复杂的封装,它把多个函数和数据封装在一起

  2. 继承

  3. 多态

类的基础用法